
val app : 'a1 list -> 'a1 list -> 'a1 list

val hd : 'a1 -> 'a1 list -> 'a1

val tl : 'a1 list -> 'a1 list

type 'a mat =
  'a list list
  (* singleton inductive, whose constructor was mkMat *)

val mat0 : int -> int -> 'a1 mat -> 'a1 list list

val nil_list : int -> 'a1 list list

val list_map : ('a1 -> 'a1) -> 'a1 list -> 'a1 list

val list_each : ('a1 -> 'a1 -> 'a1) -> 'a1 list -> 'a1 list -> 'a1 list

val product' :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 list -> 'a1 list
  -> 'a1

val list_o : 'a1 -> int -> 'a1 list

val dlist_o : 'a1 -> int -> int -> 'a1 list list

val mO : 'a1 -> int -> int -> 'a1 mat

val dlist_map : ('a1 -> 'a1) -> 'a1 list list -> 'a1 list list

val matrix_map' : ('a1 -> 'a1) -> int -> int -> 'a1 mat -> 'a1 list list

val matrix_map : ('a1 -> 'a1) -> int -> int -> 'a1 mat -> 'a1 mat

val mat_each' :
  ('a1 -> 'a1 -> 'a1) -> 'a1 list list -> 'a1 list list -> 'a1 list list

val mat_each :
  ('a1 -> 'a1 -> 'a1) -> int -> int -> 'a1 mat -> 'a1 mat -> 'a1 list list

val matrix_each :
  ('a1 -> 'a1 -> 'a1) -> int -> int -> 'a1 mat -> 'a1 mat -> 'a1 mat

val headcolumn : 'a1 -> 'a1 list list -> 'a1 list

val tailcolumn : 'a1 list list -> 'a1 list list

val gettrans : 'a1 -> 'a1 list list -> int -> 'a1 list list

val trans : 'a1 -> int -> int -> 'a1 mat -> 'a1 mat

val mlink : 'a1 list list -> 'a1 list list -> 'a1 list list

val l_mul_dl :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 list -> 'a1 list
  list -> 'a1 list

val dl_mul_dl :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 list list -> 'a1
  list list -> 'a1 list list

val mat_mul_mat :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  'a1 mat -> 'a1 mat -> 'a1 list list

val matrix_mul :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  'a1 mat -> 'a1 mat -> 'a1 mat

val mf : int -> int -> ('a1 -> 'a1 -> 'a1) -> 'a1 mat -> 'a1 mat -> 'a1 mat

val lM_to_M1 : int -> int -> 'a1 mat list -> 'a1 list list

val dlM_to_M1 : int -> int -> 'a1 mat list list -> 'a1 list list

val mM_to_M' : int -> int -> int -> int -> 'a1 mat mat -> 'a1 list list

val mM_to_M : int -> int -> int -> int -> 'a1 mat mat -> 'a1 mat

val mZero : 'a1 -> int -> int -> 'a1 mat

val madd' : ('a1 -> 'a1 -> 'a1) -> int -> int -> 'a1 mat -> 'a1 mat -> 'a1 mat

val mmul :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  'a1 mat -> 'a1 mat -> 'a1 mat

val product :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  'a1 mat list -> 'a1 mat list -> 'a1 mat

val mhead : 'a1 -> int -> int -> 'a1 mat list -> 'a1 mat

val mheadcolumn : 'a1 -> int -> int -> 'a1 mat list list -> 'a1 mat list

val mgettrans :
  'a1 -> int -> int -> 'a1 mat list list -> int -> 'a1 mat list list

val mmtrans : 'a1 -> int -> int -> int -> int -> 'a1 mat mat -> 'a1 mat mat

val ml_mul_dl :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  'a1 mat list -> 'a1 mat list list -> 'a1 mat list

val mdl_mul_dl :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  'a1 mat list list -> 'a1 mat list list -> 'a1 mat list list

val mmat_mul_mat :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  int -> int -> int -> 'a1 mat mat -> 'a1 mat mat -> 'a1 mat list list

val mmatrix_mul :
  'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> int -> int -> int ->
  int -> int -> int -> 'a1 mat mat -> 'a1 mat mat -> 'a1 mat mat

val mmatrix_each :
  int -> int -> ('a1 -> 'a1 -> 'a1) -> int -> int -> 'a1 mat mat -> 'a1 mat
  mat -> 'a1 mat mat

val mmatrix_map :
  int -> int -> ('a1 -> 'a1) -> int -> int -> 'a1 mat mat -> 'a1 mat mat
